package es.udc.fbellas.j2ee.tiendaweb.http.controller.actions;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import es.udc.fbellas.j2ee.tiendaweb.http.controller.session.SessionManager;
import es.udc.fbellas.j2ee.tiendaweb.http.view.actionforms.UserProfileForm;
import es.udc.fbellas.j2ee.tiendaweb.model.direccionpostal.TO.DireccionPostalTO;
import es.udc.fbellas.j2ee.tiendaweb.model.tarjetabancaria.TO.TarjetaBancariaTO;
import es.udc.fbellas.j2ee.tiendaweb.model.usuario.TO.UsuarioProfileTO;
import es.udc.fbellas.j2ee.util.exceptions.InternalErrorException;
import es.udc.fbellas.j2ee.util.struts.action.DefaultAction;
    
public class UpdateUserProfileDetailsAction extends DefaultAction {

    public ActionForward doExecute(ActionMapping mapping,
        ActionForm form, HttpServletRequest request,
        HttpServletResponse response)
        throws IOException, ServletException, InternalErrorException {
        
        /* Get data. */
        UserProfileForm userProfileForm = (UserProfileForm) form;
        UsuarioProfileTO usuarioProfileTO = 
            SessionManager.getUsuarioFacadeDelegate(request).buscarUsuarioProfile();
        DireccionPostalTO direccionActualTO = 
            SessionManager.getUsuarioFacadeDelegate(request).buscarDireccionUsuario();
        TarjetaBancariaTO tarjetaActualTO = 
            SessionManager.getUsuarioFacadeDelegate(request).buscarTarjetaUsuario();
        
        DireccionPostalTO direccionPostalTO = new DireccionPostalTO(direccionActualTO.getIdDir(), userProfileForm.getNombreReceptor(),userProfileForm.getCalle(),userProfileForm.getNumero(),userProfileForm.getPuerta(),userProfileForm.getCodPostal());
        
        TarjetaBancariaTO tarjetaBancariaTO = new TarjetaBancariaTO(userProfileForm.getNumTarjeta(),java.sql.Date.valueOf(userProfileForm.getFechaExp()));
        
        if(!direccionActualTO.equals(direccionPostalTO)){
        	direccionPostalTO.setIdDir(0);
        	SessionManager.getUsuarioFacadeDelegate(request).modificarDireccion(usuarioProfileTO, direccionPostalTO);
        }
        
        if(!tarjetaActualTO.equals(tarjetaBancariaTO)){
        	SessionManager.getUsuarioFacadeDelegate(request).modificarTarjeta(usuarioProfileTO, tarjetaBancariaTO);
        }
                
        SessionManager.getUsuarioFacadeDelegate(request).modificarUsuarioProfile(userProfileForm.getFirstName(), userProfileForm.getSurname(), userProfileForm.getEmail(), userProfileForm.getLanguage(), userProfileForm.getCountry());
        
        /* Update user profile details. */                    
        //SessionManager.updateUserProfileDetails(request, userProfileDetailsTO);
        
        /* Return ActionForward. */
        return mapping.findForward("MainPage");
        
    }

}
